package io.renren.rabbitmq;

import io.renren.config.MQConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.core.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class MQSender {

	private static Logger log = LoggerFactory.getLogger(MQSender.class);
	
	@Autowired
	AmqpTemplate amqpTemplate ;
	//支付后续操作队列（不包括用户升级）
	public void sendOperateAfterPayQueue(String orderNo) {
		amqpTemplate.convertAndSend(MQConfig.OPERATEAFTERPATQUEUE, orderNo);
	}

	//支付后续操作队列（用户升级）
	public void senduserUpGradeQueue(String  userId) {
		amqpTemplate.convertAndSend(MQConfig.USERUPGRADEQUEUE, userId);
	}
	//延迟队列
	public void sendDelay(String orderNo){

		amqpTemplate.convertAndSend(MQConfig.ORDER_DELAY_EXCHANGE, MQConfig.ORDER_DELAY_ROUTING_KEY, orderNo, message -> {
 			//如果配置了 params.put("x-message-ttl", 5 * 1000); 那么这一句也可以省略,具体根据业务需要是声明 Queue 的时候就指定好延迟时间还是在发送自己控制时间
			message.getMessageProperties().setExpiration(900000  + "");
			return message;
		});

	}

}
